//undefined null boolean number string symbol object array

// undefined在遇到+运算符时若另一个为字符串则转换为字符串"undefined"
console.log(undefined + undefined);
console.log(undefined + null);
console.log(undefined + true);
console.log(undefined + 1);
console.log(undefined + "1");
// console.log(undefined + Symbol("1")); //Cannot convert a Symbol value to a number
console.log(undefined + {});
console.log(undefined + []);

console.log(null + undefined);
console.log(true + undefined);
console.log(1 + undefined);
console.log("1" + undefined);
// console.log(Symbol("1") + undefined); //Cannot convert a Symbol value to a number
console.log({} + undefined);
console.log([] + undefined);

// null遇数字转为0，遇字符串转"null"
console.log(null + null);
console.log(null + true);
console.log(null + 1);
console.log(null + "1");
console.log(null + {});
console.log(null + []);

console.log(true + null);
console.log(1 + null);
console.log("1" + null);
console.log({} + null);
console.log([] + null);

// boolean遇数字转为0，遇字符串转字符串
console.log(true + true);
console.log(true + 1);
console.log(true + "1");
console.log(true + {});
console.log(true + []);

console.log(1 + true);
console.log("1" + true);
console.log({} + true);
console.log([] + true);

// number遇数字转为0，遇字符串转字符串
console.log(true + 1);
console.log(true + "1");
console.log(true + {});
console.log(true + []);

console.log("1" + true);
console.log({} + true);
console.log([] + true);

// string遇数字转为0，遇字符串转字符串
console.log(true + "1");
console.log(true + {});
console.log(true + []);

console.log({} + true);
console.log([] + true);

// object遇数字转为0，遇字符串转字符串
console.log(true + 1);
console.log(true + "1");
console.log(true + {});
console.log(true + []);

console.log("1" + true);
console.log({} + true);
console.log([] + true);

// array遇数字转为0，遇字符串转字符串
console.log(true + 1);
console.log(true + "1");
console.log(true + {});
console.log(true + []);

console.log("1" + true);
console.log({} + true);
console.log([] + true);
